<template>
  <div>
    <slot></slot>
  </div>
</template>

<script>
export default {
  provide(){
    return {
      form: this // 传递form实例，比如formItem用来校验
    }
  },
  props: {
    model: {
      type: Object
    },
    rules: {
      type: Object
    }
  },
  methods: {
    validate(cb){
      // map结果是若干Promise数组 (有可能是异步代码)
      const tasks = this.$children
        .filter(item => item.prop)
        .map( item => item.validate())
      // 所有任务必须全部成功才算通过
      Promise.all(tasks)
        .then( () => cb(true))
        .catch( () => cb(false))
    }
  }
}
</script>